#该函数用于查询content[]中各条新闻title对应的description，返回一个description[]
import pandas as pd
from rouge import Rouge
import datetime
import pymysql
import requests
import time
import pandas
import re
import xlwt
import to_sql #写入数据库函数

from selenium import webdriver
from selenium.webdriver.chrome.options import Options
from urllib import request
from urllib import parse
from bs4 import BeautifulSoup


from warnings import simplefilter
simplefilter(action='ignore', category=FutureWarning)

#下面将content_list中的各个title进行intro查找，最终返回一个description_list
# 隐式打开一个浏览器
def open_Explor():
    chrome_options = Options()
    chrome_options.add_argument('--headless') # 16年之后，chrome给出的解决办法，抢了PhantomJS饭碗
    chrome_options.add_argument('--disable-gpu')
    chrome_options.add_argument('--no-sandbox')  # root用户不加这条会无法运行

    driver = webdriver.Chrome(chrome_options=chrome_options, executable_path='/usr/bin/chromedriver')

    return driver

# 主函数
def get_des(key,type = 0,n = 1):#key：搜索关键词，type：图片尺寸类型，n:下载图片数量
#这里加入两个参数用来筛选图片的尺寸
    size = ["",                   ##任意尺寸
        "&width=1920&height=1080",##电脑壁纸
        "&width=2560&height=1440",##手机壁纸
    ]
    # 网页链接中不能出现中文，所以要对关键词进行转码，用到了quote函数。
    key_word = parse.quote(str(key))
    # 拼接起始页面地址
    url = "https://www.baidu.com/s?rtt=1&bsst=1&cl=2&tn=news&word=" + key_word + size[type]
    # 打开浏览器并访问起始页
    driver = open_Explor()
    driver.get(url)
    #print(driver.page_source)
    soup = BeautifulSoup(driver.page_source, 'html.parser')
    node = soup.find('span', attrs={"class": "c-font-normal c-color-text"})
    mod_string_start = '摘要 '
    mod_string_end = ' 摘要结束，点击查看详情'
    driver.quit()

    if(node is None):
        return ''
    else:
        return node["aria-label"].replace(mod_string_end, '...').replace(mod_string_start, '')
    

# 接收标题list，传回摘要list
def process_content_desc(list):
    print("description:\n")
    list_des =[]
    i=0
    for content in list:
        # print(i)
        intro=get_des(key = content)
        list_des.append(intro)
        print(content,':',intro)
        i=i+1
    return list_des

    


    



